'use strict';

const logger = require('./logutility').logger('gputility');

/**
 * 由Generate和Promise组成的异步函数的执行过程控制
 * 
 * @param {Function}gpfuc 由Generate和Promise组成的异步函数
 */
function excuteGP(gpfuc) {
    let excute = function(result) {
        if (result.done) {
            return result.value;
        } else {
            return result.value.then(function(value) {
                return excute(gpfuc.next(value));
            }, function(error) {
                return excute(gpfuc.throw(error));
            })
        }
    }
    excute(gpfuc.next());
}

exports.excuteGP = excuteGP;